
//1.什么是递归函数
/*//程序调用自身的编程技巧称为递归。递归作为一种算法，在程序设计中广泛应用。一个过程或函数在其定义或说明中有直接或者间接调用的一种方法。它通常把
//一个大型复杂的问题转化为一个与原问题相似的规模较小的问题来解决。递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算。大大减少了
//代码的程序量*/

//2.递归的两个必要条件
//存在限制条件，当满足这个限制条件时，递归便不再继续
//每次递归调用后越来越接近这个限制条件

//3.递归常见的错误：栈溢出（Stack Overflow）
// 例如：int main(){
// printf("heheh);
// main();
// return 0;
// }这就是一个常见的递归函数自己调用自己
// 也就是每次函数的调用都会在栈区分配一定的空间，包main()函数
// 
//4.内存的使用情况
//内存会划分为几个区域  (1)栈区(2)堆区(3)静态区
//栈区用来存放自己创建的局部变量，函数的形参，以及函数的运行
//堆区用来存放动态开辟的内存，例如malloc，calloc等函数开辟的
// 静态区存放全局变量，static修饰的变量

//5.注意递归一定要注意函数的退出条件

//6.递归并不能无限制的进行下去，递归层次太深，会出现栈溢出的情况

//7.递归函数中如果定义了一个变量，本函数中如果再次调用了函数，不会对递归函数中上一层的变量进行影响
